/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.com.ingsw.service;

import mx.com.ingsw.dao.AlumnoDAO;
import mx.com.ingsw.dao.DatosDAO;
import mx.com.ingsw.model.Alumno;
import mx.com.ingsw.model.Datos;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

@Service("ServiceDatos")
@Scope("request")
public class ServiceDatos {
     Alumno aluServ= new Alumno();
     DatosDAO dd=new DatosDAO();
     Datos da=new Datos();
     Datos dabd=new Datos();
     ValidaCampos vc=new ValidaCampos();
     private int cuentaAux;

    /*Este metodo de validacion es solo para los datos personales, el de alumno tambien verificaba fechas para el login*/
    public String validarDaPersonales(Alumno alu) throws Exception{                         //Inicia Metodo para Validar los datos de Acceso al Usuario
       AlumnoDAO ad=new AlumnoDAO();
       Alumno albd = ad.read(alu.getNoCuenta());                               //Se Lee  el No de Cuenta dado desde el navegador 
       if (vc.cuenta(alu.getNoCuenta())==false)
        return"El número de cuenta contiene 9 digitos sin guiones ni espacios";//
       if (vc.password(alu.getPasswordAlu())==false)
        return"La contraseña debe tener 8 digitos";//La contraseña debe tener 8 digitos

       if(albd==null)                                                           //Primero Verificamos que exista en la B.D.
           return "Usuario no registrado";                                                           //De no existir los datos (null) mostraremos mensaje: No existe el Alumno
       if((int)albd.getNoCuenta()==(int)alu.getNoCuenta() ) {
            if(alu.getPasswordAlu().equals(albd.getPasswordAlu())) {
               aluServ.setNoCuenta(alu.getNoCuenta());
               cuentaAux=alu.getNoCuenta();
               return "Exito";}                                                 //Una vez verificados los datos lo direccionamos a la pagina de Altas
            else {
               return "Datos incorrectos";}
        }                                                      //En caso de no coincidir la contraseña se mostrara un mensaje de error: Contraseña Erronea
       else {
            return "Datos incorrectos";}                                                               //En caso de no coincidir el No. de cuenta se mostrara un mensaje de erorr: No. de Cuenta Erronea
    }//Termina Metodo para Validar los datos de Acceso al Usuario
    
    public String actualizaDatos(Datos datos,String newpass)throws Exception{
        if(!(newpass==null || "".equals(newpass))){
        if (vc.password(newpass)==false)
        return"La contraseña debe tener 8 digitos";//La contraseña debe tener 8 digitos
            AlumnoDAO alumnoDAO = new AlumnoDAO();
            aluServ=alumnoDAO.read(datos.getIdDatos());
            aluServ.setPasswordAlu(newpass);
            alumnoDAO.update(aluServ);
        }

        dabd=dd.read(datos.getIdDatos());        //leemos para ver que datos no modifico
        if(dabd.getIdDatos()==null) {
            return "error";}
        
        //celular
        if( "".equals(datos.getCelular()) ){               //si el usuario no cambio sus datos
           datos.setCelular(dabd.getCelular());}   //solo jalaremos los que tenga en la base de datos
        
        //telefono
        if( "".equals(datos.getTelefono()) ){
           datos.setTelefono(dabd.getTelefono());}
        
        //correo
        if( "".equals(datos.getCorreo()) ){                //y los guardaremos para que a la hora de hacer la pesistencia
           datos.setCorreo(dabd.getCorreo());}     //guarde el mismo valor que tenga por defecto
        
        //colonia
        if( "".equals(datos.getColonia()) ){               //los datos son:domicilio,colonia,ciudad,cp,telefono,celular,correo
           datos.setColonia(dabd.getColonia());}
        
        //codigo postal        
        if( "".equals(datos.getCp())){
           datos.setCp(dabd.getCp());}
        
        //domicilio
        if("".equals(datos.getDomicilio())){
           datos.setDomicilio(dabd.getDomicilio());}
        
        //ciudad
        if("".equals(datos.getCiudad())){
           datos.setCiudad(dabd.getCiudad());}
        
        //aqui hacemos persistencia para guardar los datos
        if(datos.getIdDatos()==0) {
           return "No hay datos que actualizar";}
        else{
             dd.update(datos); //actualizamos los datos en el renglon de donde encuentre el id del alumno seleccionado    
             return "Exito";}
    }
       
    
    public DatosDAO getDd() { return dd;}
    public void setDd(DatosDAO dd) {this.dd = dd;    }
    public Datos getDa() {return da;}
    public void setDa(Datos da) {this.da = da;}
    public Datos getDabd() {return dabd;}
    public void setDabd(Datos dabd) {this.dabd = dabd;}
    public int getCuentaAux() { return cuentaAux;}
}
